package com.ayu.wxgzh.ayucyy.chain.handler;

import com.ayu.wxgzh.ayucyy.chain.HandlerConfig;
import com.ayu.wxgzh.ayucyy.entity.Article;
import com.ayu.wxgzh.ayucyy.entity.BaseMessage;
import com.ayu.wxgzh.ayucyy.entity.NewsMessage;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Map;
import java.util.Objects;

/**
 * @Author 徐林玉
 * @Description AbstractHandler
 * @Date 2022/9/2 10:30
 * @Version 1.0
 */
@Component
@Getter
@Setter
public abstract class AbstractHandler {

    /**
     * 当前处理器持有下一个处理器的引用
     */

    private AbstractHandler nextHandler;

    /**
     * 处理器执行方法
     *
     * @return
     * @requestMap requestMap
     */
    public abstract BaseMessage handle(Map<String, String> requestMap);

    /**
     * 处理器配置
     */
    protected HandlerConfig config;

    /**
     * 链路传递
     *
     * @return
     * @String 用户的消息
     */
    protected BaseMessage next(Map<String, String> requestMap) {
        //下一个链路没有处理器了，直接返回
        if (Objects.isNull(nextHandler)) {

            return null;
        }

        //执行下一个处理器
        return nextHandler.handle(requestMap);
    }


    public BaseMessage getArticleMessage(Article articleByText, Map<String, String> requestMap) {

        if (Objects.nonNull(articleByText)) {

            ArrayList<Article> articles = new ArrayList<>();

            articles.add(articleByText);

            NewsMessage videoMessage = new NewsMessage(requestMap, articles);

            return videoMessage;

        }
        return null;

    }
}
